package com.project.mapper;

import com.project.bean.RoomBean;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface IRoomMapper {
    /**
     * 根据id查询房间的详细信息
     * @param id 房间id
     * @return 返回房间信息集合
     */
    public RoomBean findById(Integer id);

    /**
     * 添加房间，该房间不存在就添加
     * @param room
     */
    @Insert("insert into t_room(r_roomAddress,r_roomState,r_type,r_ceilingPeple)" +
            "values(#{roomAddress},#{roomState},#{type},#{maxNum})")
    public void add(RoomBean room);

    /**
     * 根据id删除房间
     * @param id 房间id
     */
    @Delete("delete from t_room where pk_roomId = #{id}")
    public void del(Integer id);

    /**
     * 模糊动态查询
     * @param roomAddress 房间地址
     * @param bool 是否可住 默认为不限
     * @param roomState 房间状态 默认为不限
     * @param type 房间类型 默认为不限
     * @return 返回符合条件的房间集合
     */
    public List<RoomBean> findName(@Param("roomAddress") String roomAddress,
                                   @Param("bool") String bool,
                                   @Param("roomState") String roomState,
                                   @Param("type") String type);

    /**
     * 根据房间id修改房间状态
     * @param roomId 房间id
     * @param newState 新状态
     */
    @Update("update t_room set r_roomState = #{newState} where pk_roomId = #{roomId}")
    public void updateState(@Param("roomId") Integer roomId,
                            @Param("newState") String newState);

    /**
     * 根据房间编号，查询该房间的已住人数（就是分组查询每个房间的学生数再做统计）
     *
     * @param roomId 房间编号
     * @return 返回已住人数
     */
    public int countStuByRoom(Integer roomId);
}
